From ab1699510ebfd4c04b06b7d0e2886e498ef3e2c3 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 23 Dec 2011 22:23:40 +0100 Subject: [PATCH] themingbackground: Avoid erroring cairo context --- gtk/gtkthemingbackground.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/gtk/gtkthemingbackground.c b/gtk/gtkthemingbackground.c index 75ef3529ed..a525e18556 100644 --- a/gtk/gtkthemingbackground.c +++ b/gtk/gtkthemingbackground.c @@ -304,9 +304,6 @@ _gtk_theming_background_paint (GtkThemingBackground *bg, "background-repeat", &repeat, NULL); - /* Fill background color first */ - cairo_fill_preserve (cr); - if (cairo_pattern_get_surface (bg->pattern, &surface) != CAIRO_STATUS_SUCCESS) surface = NULL; @@ -327,16 +324,22 @@ _gtk_theming_background_paint (GtkThemingBackground *bg, scale_height = bg->image_rect.height; } - cairo_translate (cr, bg->image_rect.x, bg->image_rect.y); - cairo_scale (cr, scale_width, scale_height); - cairo_set_source (cr, bg->pattern); - cairo_scale (cr, 1.0 / scale_width, 1.0 / scale_height); - cairo_translate (cr, -bg->image_rect.x, -bg->image_rect.y); + if (scale_width && scale_height) + { + /* Fill background color first */ + cairo_fill_preserve (cr); + + cairo_translate (cr, bg->image_rect.x, bg->image_rect.y); + cairo_scale (cr, scale_width, scale_height); + cairo_set_source (cr, bg->pattern); + cairo_scale (cr, 1.0 / scale_width, 1.0 / scale_height); + cairo_translate (cr, -bg->image_rect.x, -bg->image_rect.y); - g_free (repeat); + g_free (repeat); - cairo_pattern_destroy (bg->pattern); - bg->pattern = NULL; + cairo_pattern_destroy (bg->pattern); + bg->pattern = NULL; + } } cairo_fill (cr); -- 2.30.2